package Tipos;

/**
 * Class OperaLogi representa los operadores lógicos,
 * imita a un enumerado de C.
 * 
 * @author Martín Montalvo Martínez
 */
public class OperaLogi{
    
    public static enum operaLogi{AND,OR,NOT};
    
    private operaLogi tipo;
    
    public OperaLogi(){
        
    }
    
    /**
     *Crea un operador lógico a partir del enumerado
     */
    public OperaLogi(operaLogi opera){
        tipo=opera;
    }
    
    /**
     *Crea un operador lógico a partir de su valor en un String.
     *Si el valor del String no casa con ningún valor del enumerado crea por
     *defecto el operado AND. A la hora de comparar la cadena no tiene en cuenta
     *las mayúsculas
     */
    public OperaLogi(String opera){
        try{
            if(opera.compareToIgnoreCase("AND")==0)
                tipo=operaLogi.AND;
            if(opera.compareToIgnoreCase("OR")==0)
                tipo=operaLogi.OR;
            if(opera.compareToIgnoreCase("NOT")==0)
                tipo=operaLogi.NOT;
            tipo=operaLogi.valueOf(opera);
        }
        catch(IllegalArgumentException a){
            tipo=operaLogi.valueOf("AND");
        }
    }
    
    /**
     *Devuelve el valor del enumerado del operador
     */
    public String getTipo(){
        return tipo.toString();
    }
    
    /**
     *Devuelve el resultado de comparar los operadores lógicos.
     *Si devuelve Cierto son iguales, eoc son distintos
     */ 
    public Boolean equals(OperaLogi oper2){
        if(tipo.toString()==oper2.toString())
            return true;
        return false;
    }
    
    public static void main(String args[]){
        OperaLogi token= new OperaLogi("Barradiv");
        System.out.println(token.getTipo());
        
        OperaLogi token2= new OperaLogi("Inven");
        System.out.println(token2.getTipo());
    }
}
